package ctrLayer;

import modelLayer.*;


import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * The test class AftaleCtrTest.
 *
 * @author  (your name)
 * @version (a version number or a date)
 */
public class AftaleCtrTest
{
    /**
     * Default constructor for test class AftaleCtrTest
     */
    public AftaleCtrTest()
    {
    }

    /**
     * Sets up the test fixture.
     *
     * Called before every test case method.
     */
    @Before
    public void setUp()
    {
        // Opret en person, der hverken er kunde eller ansat.
        PersonCtr personCtr = new PersonCtr();
        try
        {
            personCtr.opretPerson(null, null, "a", "b", "c", "d", "e", "f");
        }
        catch (Exception e) { }
    }

    /**
     * Tears down the test fixture.
     *
     * Called after every test case method.
     */
    @After
    public void tearDown()
    {
        // Fjern kunde og ansat objektet fra kunden efter hver test.
        PersonCtr personCtr = new PersonCtr();
        Person p = personCtr.findPerson("e");
        p.setAnsat(null);
        p.setKunde(null);
    }

    /**
     * Opret ordre hvor personen (køberen) er privat kunde.
     */
    @Test
    public void opretOrdreFindKundeErPrivatKunde()
    {
        // Opret controller
        ctrLayer.AftaleCtr aftaleCtr = new ctrLayer.AftaleCtr();
        
        // Opret aftale
        aftaleCtr.opretAftale(AftaleType.ORDRE);
        
        // Gør personen til en privatkunde.
        Person p = PersonContainer.getInstance().findPerson("e");
        p.setKunde(new Privat());
        
        // Find personen
        boolean FEJL = false;
        try
        {
            aftaleCtr.findOgSetKunde("e");
        }
        catch (Exception e)
        {
            FEJL = true;
        }
        assertEquals(false, FEJL);
    }

    /**
     * Opret ordre hvor personen (køberen) er erhvervskunde.
     */
    @Test
    public void opretOrdreFindKundeErErhvervsKunde()
    {
        ctrLayer.AftaleCtr aftaleCtr = new ctrLayer.AftaleCtr();
        aftaleCtr.opretAftale(AftaleType.ORDRE);
        
        // Gør personen til en erhvervskunde.
        Person p = PersonContainer.getInstance().findPerson("e");
        p.setKunde(new Erhverv("", ""));
        
        // Find personen
        boolean FEJL = false;
        try
        {
            aftaleCtr.findOgSetKunde("e");
        }
        catch (Exception e)
        {
            FEJL = true;
        }
        assertEquals(false, FEJL);
    }

    /**
     * Opret ordre hvor personen (køberen) ikke er kunde.
     */
    @Test
    public void opretOrdreFindPersonEjKunde()
    {
        // Opret controller
        ctrLayer.AftaleCtr aftaleCtr = new ctrLayer.AftaleCtr();
        
        // Opret ordre
        aftaleCtr.opretAftale(AftaleType.ORDRE);
        
        // Find personen
        boolean FEJL = false;
        try
        {
            aftaleCtr.findOgSetKunde("e");
        }
        catch (Exception e)
        {
            FEJL = true;
        }
        assertEquals(true, FEJL);
    }
}